package com.summer.wxapp.service.impl;
//
//import java.text.DecimalFormat;
//import java.util.Date;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//import javax.annotation.Resource;
//
//import org.hibernate.FlushMode;
//import org.hibernate.Session;
//import org.springframework.orm.hibernate3.HibernateTemplate;
import java.util.List;

import javax.annotation.Resource;

import org.hibernate.FlushMode;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.alibaba.fastjson.JSONObject;
import com.summer.wxapp.model.WeAppUser;
//import org.springframework.transaction.annotation.Transactional;
//
//import com.google.gson.Gson;
//import com.gson.bean.InMessage;
//import com.summer.user.model.User;
//import com.summer.wxapp.model.WeUser;
import com.summer.wxapp.service.WeAppUserService;
//
@Service("weAppUserService")
public class WeAppUserServiceImpl implements WeAppUserService {
	
	@Resource
	HibernateTemplate ht;
	
	
	@Override
	@Transactional(readOnly = false, rollbackFor = Exception.class)
	public WeAppUser createWeUserFromApp(JSONObject json) {
		
		
//		String XHQID
//		String STATUS
		
		String openId = json.getString("openId");
		String nickName = json.getString("nickName");
		String gender = json.getString("gender");
		String language = json.getString("language");
		String city = json.getString("city");
		String province = json.getString("province");
		String country = json.getString("country");
		String avatarUrl = json.getString("avatarUrl");
		WeAppUser weAppUser = new WeAppUser();
		weAppUser.setOpenid(openId);
		weAppUser.setNickname(nickName);
		weAppUser.setSex(Integer.parseInt(gender));
		weAppUser.setLanguage(language);
		weAppUser.setCity(city);
		weAppUser.setProvince(province);
		weAppUser.setCountry(country);
		weAppUser.setHeadimgurl(avatarUrl);
		
		return weAppUser;
	}
	
	@Override
	public void saveWeUserFromApp(WeAppUser weAppUser) {
		if(weAppUser != null && null != weAppUser.getOpenid()) {
			Session session = ht.getSessionFactory().openSession();
			session.setFlushMode(FlushMode.AUTO);
			session.save(weAppUser);
			session.flush();
			session.close();
		}
	}
	
	@Override
	public List<WeAppUser> queryWeAppUserListByOpenId(String openId) {
		
		List<WeAppUser> list = null;
		if(openId != null && !"".equals(openId)) {
			list = ht.find("from WeAppUser weAppUser where weAppUser.openid = ?", openId);
		}
		return list;
	}
	
	
	
//
//	@Resource
//	HibernateTemplate ht;
//	
//	
//	@Resource
//	UserNameUtil userNameUtil;
//
//	/**
//	 * 创建微信用户
//	 */
//	@Override
//	@Transactional(readOnly = false, rollbackFor = Exception.class)
//	public void create(WeUser weuser) {
//		if(weuser==null||weuser.getOpenid()==null){
//			return;
//		}
//		try {
//			List list=ht.find("from WeUser w where w.openid=?",weuser.getOpenid());
//			if (list == null||list.size()<=0) {
//				weuser.setStatus(0);
//				weuser.setSubscribedTime(new Date());
//				
//				Session session = ht.getSessionFactory().getCurrentSession(); 
//				session.setFlushMode(FlushMode.AUTO);   
//				ht.save(weuser);
//				session.flush();
//			}else{
//				weuser=(WeUser)list.get(0);
//				weuser.setSubscribedTime(new Date());
//				
//				Session session = ht.getSessionFactory().getCurrentSession(); 
//				session.setFlushMode(FlushMode.AUTO);   
//				ht.merge(weuser);
//				session.flush();
//				
//			}
//		} catch (Exception ex) {
//			ex.printStackTrace();
//		}
//
//	}
//	
//	@Override
//	/**
//	 * /返回值0：无此用户 1：用户关注没绑定 用户id：绑定用户
//	 */
//	public String userFlag(String openid) {
//		WeUser user = ht.get(WeUser.class, openid);
//		if (user != null) {
//			if (user.getUser() != null) {
//				return user.getUser().getId();
//			} else {
//				return "1";
//			}
//		}
//		return "0";
//	};
//	
//	/**
//	 * /返回值0：无此用户 1：用户关注没绑定 用户id：绑定用户
//	 */
//	@Override
//	public String userFlag(String openid,String id) {
//		WeUser user = ht.get(WeUser.class, openid);
//		List<WeUser> list=(List<WeUser>)ht.find("from WeUser w where (w.user.id=? or w.user.mobileNumber=?)",new Object[]{id,id});
//		
//		if (user != null) {
//			if(list==null||list.size()<=0){
//				return "1";
//			}
//			else{
//				return list.get(0).getUser().getId();
//			}
//		}
//		else{
//			if(list==null||list.size()<=0){
//				return "0";
//			}
//			else{
//				return list.get(0).getUser().getId();
//			}
//		}
//	}
//	
//	/**
//	 * /判断华玺用户是否是 微信绑定用户
//	 */
//	@Override
//	public WeUser isWeUser(User u) {
//		if(u==null||u.getId()==null||u.getId().equals("")){
//			return null;
//		}
//		List list=ht.find("from WeUser w where w.user.id=?",u.getId());
//		
//		if(list!=null&&list.size()>0){
//			return (WeUser)list.get(0);
//		}
//		
//		return null;
//	}
//	
//	/**
//	 * 绑定用户
//	 */
//	@Override
//	@Transactional(readOnly = false, rollbackFor = Exception.class)
//	public void register(WeUser weuser) {
//		try {
//			ht.saveOrUpdate(weuser);
//		} catch (Exception ex) {
//			ex.printStackTrace();
//		}
//	}
//	
//	/**
//	 * 获取用户信息并保存
//	 */
//	@Override
//	public void getUserInfo(InMessage msg){
//		WeUser user = new WeUser();
//		String access_token = TokenThread.token();
//		String openid = msg.getFromUserName();
//		String url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token="
//				+ access_token + "&openid=" + openid + "&lang=zh_CN";
//
//		String json = WXTools.getHtml(url);
//		System.out.println(json);
//
//		Gson gson = new Gson();
//		user = gson.fromJson(json, WeUser.class);
//	
//		this.create(user);
//	}
//	
//	/**
//	 * 获取用户信息
//	 */
//	@Override
//	public WeUser getUserInfo(String openid){
//		WeUser user = new WeUser();
//		String access_token = TokenThread.token();
//		String url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token="
//				+ access_token + "&openid=" + openid + "&lang=zh_CN";
//
//		String json = WXTools.getHtml(url);
//		System.out.println(json);
//
//		Gson gson = new Gson();
//		user = gson.fromJson(json, WeUser.class);
//
//		return user;
//	}
//	
//	/**
//	 * 改变用户状态
//	 */
//	@Override
//	@Transactional(readOnly = false, rollbackFor = Exception.class)
//	public void  setUserStatus(String openid,int status){
//		WeUser user = ht.get(WeUser.class, openid);
//		
//		if(user!=null){
//			if(status==0){
//				user.setSubscribedTime(new Date());
//				/*if(user.getStatus()==1){
//					return;
//				}*/
//			}else if(status==2){
//				user.setUnsubscribedTime(new Date());
//				user.setUser(null);
//				/*if(user.getStatus()==1){
//					return;
//				}*/
//			}else if(status==1){
//				user.setBindindTime(new Date());
//			}
//			
//			user.setStatus(status);
//			
//			ht.merge(user);
//		}
//	}
//	
//	/**
//	 * 获得用户的资产情况，封装到map中
//	 */
//	@Override
//	@Transactional(readOnly = false, rollbackFor = Exception.class)
//	public Map getUserMap(User u){
//		HashMap map=new HashMap();
//		if(u==null||u.getId()==null){
//			return map;
//		}
//		String id=u.getId();
//		
//		DecimalFormat df=new DecimalFormat("#################0.00");
//		
//		map.put("userid",userNameUtil.userCutName(id));
//		//资产总额
//		//可用金额
//		//待收本金
//		//待收收益
//		//待收金额
//		//冻结金额
//		map.put("zcze", df.format(billStatistics.getBalanceByUserId(id)+billStatistics.getFrozenMoneyByUserId(id)+investStatistics.getReceivableCorpus(id)+investStatistics.getReceivableInterest(id)));
//		map.put("kyje", df.format(billStatistics.getBalanceByUserId(id)));
//		map.put("dsbj", df.format(investStatistics.getReceivableCorpus(id)));
//		map.put("dssy", df.format(investStatistics.getReceivableInterest(id)));
//		map.put("dsje", df.format(investStatistics.getReceivableCorpus(id)+investStatistics.getReceivableInterest(id)));
//		map.put("djje", df.format(billStatistics.getFrozenMoneyByUserId(id)));
//		
//		return map;
//	}
//	
//	public Map getUserMap(String openId){
//		if(openId==null){
//			return null;
//		}
//		List list=ht.find("select w.user from WeUser w where w.openid=?",openId);
//		if(list==null||list.size()<=0){
//			return null;
//		}
//		return this.getUserMap((User)list.get(0));
//	}
//	
//	/**
//	 * 微信用户解绑
//	 */
//	@Override
//	@Transactional(readOnly = false, rollbackFor = Exception.class)
//	public void unBindingUser(String openId){
//		if(openId==null||openId.equals("")){
//			return;
//		}
//		WeUser user = ht.get(WeUser.class, openId);
//		if(user==null){
//			return;
//		}
//		user.setUser(null);
//		user.setStatus(0);
//		
//		ht.merge(user);
//	}
}
